package jeudelavie.controleur;

import jeudelavie.modele.Plateau;
import jeudelavie.vue.FenetrePrincipale;

public class Controleur {
    private Plateau leModele;
    private FenetrePrincipale laVue;
    
    public Controleur(FenetrePrincipale laVue, Plateau leModele){
        this.laVue = laVue;
        this.leModele = leModele;
    }
    
    public void changeEtatCellule(int x, int y){
        if(leModele.isEtatThread()==false){
            leModele.changeEtatCellule(x, y);
        }
    }

    //Appelle la génération aléatoire du modèle
    public void genereAleatoire(){
        leModele.initialiser(0);
        leModele.generationAleatoire(0.5);
    }

    //Appelle la remise à zéro du modèle
    public void remiseAZero(){
        leModele.initialiser(0);
    }

    //Désactivation des options de la vue et lancement du thread du modèle
    public void lancement(){
        leModele.start();
        laVue.affichePause();
        laVue.afficheReprise();
    }
    
    //Modifie le booléen de lancement du modèle et désactive les options de la vue durant le lancement
    public void pause(){
        leModele.setEtatThread(false);
    }

    //Modifie le booléen de lancement du modèle et Réactive les options de la vue durant la pause
    public void reprise(){
        leModele.setEtatThread(true);
    }

    //Appelle la sauvegarde en XML de la vue
    public void saveXml(){
        laVue.saveXml();
    }

    //Appelle le chargement en XML de la vue
    public void loadXml(){
        laVue.loadXml();
    }
    
    //Appelle la modification de l'état d'une cellule du modèle
    public void modifierCellule(int _x, int _y, int _etat){
        leModele.modifierCellule(_x, _y, _etat);
    }

    //Quitte l'application
    public void quitter()
    {
        System.exit(0);
    }    
}
